package com.yex.service.otc;


import com.baomidou.mybatisplus.service.IService;
import com.yex.utils.JsonResultVo;
import com.yex.entity.otc.OtcEntrust;

import java.math.BigDecimal;

/**
 * <p>
 * otc 委托表 服务类
 * </p>
 *
 * @author Little Liu
 * @since 2018-05-02
 */
public interface IOtcEntrustService extends IService<OtcEntrust> {
    /**
     * 保存委托
     *
     * @param otcEntrust
     * @return
     */
    JsonResultVo saveOtcEntrust(OtcEntrust otcEntrust);

    /**
     * 委托列表
     *
     * @param coinId 币种id
     * @return
     */
    JsonResultVo otcEntrustList(Integer coinId, Integer userId);


    /**
     * 委托列表
     *
     * @param coinId 币种id
     * @param userId 用户id
     * @return
     */
    JsonResultVo otcEntrustUserList(Integer coinId, Integer userId);


    /**
     * 委托列表
     *
     * @param userId 用户id
     * @return
     */
    JsonResultVo otcAppEntrustUserList(Integer userId);

    /**
     * 暂停委托订单
     *
     * @param entrustId 委托id
     * @param userId 用户id
     * @return
     */
    JsonResultVo suspendOtcEntrust(Integer entrustId, Integer userId);

    /**
     * 取消委托订单
     *
     * @param entrustId 委托id
     * @param userId 用户id
     * @return
     */
    JsonResultVo cancelOtcEntrust(Integer entrustId, Integer userId);

    /**
     * 取消委托订单
     *
     * @param entrustId 委托id
     * @param userId 用户id
     * @return
     */
    JsonResultVo cancelAutoOtcEntrust(Integer entrustId, Integer userId);

    /**
     * 增加 成交数量
     *
     * @param entrustId 委托id
     * @return
     */
    JsonResultVo updateAddDealCount(Integer entrustId, BigDecimal count, BigDecimal price);

    /**
     * 减去 成交数量
     *
     * @param entrustId 委托id
     * @return
     */
    JsonResultVo updateSubDealCount(Integer entrustId, BigDecimal count, BigDecimal price);

    /**
     * 获取 浮动 价格
     * @param coinId 法币id
     * @param otcEntrust 委托对象
     */
    void autoIndexTickerPrice(Integer coinId, OtcEntrust otcEntrust);

    /**
     * 完全完成
     *
     * @param entrustId 委托id
     * @return
     */
    JsonResultVo updateFinishCount(Integer entrustId, BigDecimal count, BigDecimal prize);


    /**
     *  查询正在委托的订单
     * @param type
     * @param userId
     * @return
     */
    int queryNowOrder(int type, Integer userId);

}
